package cn.liu._01_hello;

import cn.liu.ConnectionUtil;
import com.rabbitmq.client.*;
import java.io.IOException;

//消息接收方（消费者）
public class Rev {
    public static void main(String[] args) throws Exception {
        //1.创建连接
        Connection connection = ConnectionUtil.getConnection();
        //2.创建通道
        Channel channel = connection.createChannel();
        //3.声明队列
        channel.queueDeclare(Send.NAME_QUEUE_HELLO_1010,true,false,false,null);
        //4.消费消息
        //消费方法
        DefaultConsumer consumer = new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                System.out.println("消费者的标签 ："+consumerTag);
                //System.out.println("对象 ："+envelope);
                System.out.println("交换机 ："+envelope.getExchange());
                System.out.println("消息的ID ："+envelope.getDeliveryTag());
                System.out.println("队列 ："+envelope.getRoutingKey());
                System.out.println("消息的内容 ："+new String(body));
            }
        };
        /**
         * 监听队列String queue, boolean autoAck,Consumer callback
         * 参数明细
         * 1、队列名称
         * 2、是否自动回复，设置为true为表示消息接收到自动向mq回复接收到了，mq接收到回复会删除消息，设置为false则需要手动回复
         * 3、消费消息的方法，消费者接收到消息后调用此方法
         */
        channel.basicConsume(Send.NAME_QUEUE_HELLO_1010 , true,consumer);
    }
}
